科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件行政区划程序的设计(十六)

行政区划程序的设计(十六)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

行政区划程序的设计(十六)

作者:水如烟 来源:CSDN 2007年12月16日

关键字: 设计 程序 行政区划

  • 评论
  • 分享微博
  • 分享邮件

上一篇实现的是获取各种版本的数据集。
针对这个方案的特点,用户使用更多的可能只是针对某一版本的数据集,特别是可能只使用最新版本的数据集。
这一篇的代码,已接近界面上的应用。

以下代码在RegionalCodeCenter项目实现。

由于在一开始的方案分析中,分析还是全面、准确、到位、有效的,也通过接口明确了各种范围、各个应用的分工,所以,就算断断续续的来实现这个方案,来写代码,思路还是沿承了下来,没有给弄糊涂。

接口IClientUseServices其实实现的是下面流程图的左边部分。

Namespace [Interface]
    
Public Interface IClientUseServices
        
Event ServiceMessage As ServiceMessageHandler

        
Function IsSameDataDate(ByVal queryDataDate As DateTime, ByVal currentDataDate As StringAs Boolean
        
Function GetAllInformationsTable(ByVal queryDataDate As DateTime) As RegionalCodeCommon.Database.dsRegionalCode.AllInformationsDataTable
        
Function GetVersionsDataTable() As RegionalCodeCommon.Database.dsRegionalCode.VersionsDataTable

        
Sub Dispose()
    
End Interface
End Namespace


在实现接口前,先建一个类RegionalCodeService来取各版本的数据集。
RegionalCodeService.vb

Namespace Services
    
Public Class RegionalCodeService
        
Inherits RegionalCodeCommon.Services.RegionalCodeServiceBase

        
Sub New(ByVal connectionString As String)
            
MyBase.New(New Services.ServerServices(connectionString))
        
End Sub

    
End Class
End Namespace

实现接口的类ClientUseServices有两个文件,
ClientUseServices.vb

Namespace Services
    
Public Class ClientUseServices
        
Implements RegionalCodeCommon.Interface.IClientUseServices
        
Public Event ServiceMessage(ByVal sender As ObjectByVal message As StringImplements RegionalCodeCommon.Interface.IClientUseServices.ServiceMessage

        
'数据服务
        Private WithEvents gRegionalCodeService As RegionalCodeCommon.Services.RegionalCodeServiceBase

        
''' <param name="regionalCodeService">数据服务</param>
        Sub New(ByVal regionalCodeService As RegionalCodeCommon.Services.RegionalCodeServiceBase)
            
Me.gRegionalCodeService = regionalCodeService
        
End Sub

        
'版本集
        Private gVersionDateTable As New RegionalCodeCommon.Database.dsRegionalCode.VersionsDataTable

        
'当前区划信息
        Private gCurrentAllInformationsTable As New RegionalCodeCommon.Database.dsRegionalCode.AllInformationsDataTable

        
'当前版本
        Private gCurrentVersionDate As String = "Empty"

        
'数据来源

        
Public Property Source() As RegionalCodeCommon.Services.RegionalCodeServiceBase.DataSource
            
Get
                
Return Me.gRegionalCodeService.Source
            
End Get
            
Set(ByVal value As RegionalCodeCommon.Services.RegionalCodeServiceBase.DataSource)
                
Me.gRegionalCodeService.Source = value
            
End Set
        
End Property

        
'存放区划码信息的文件
        Public Property RegionalCodeFileName() As String
            
Get
                
Return Me.gRegionalCodeService.RegionalCodeFileName
            
End Get
            
Set(ByVal value As String)
                
Me.gRegionalCodeService.RegionalCodeFileName = value
            
End Set
        
End Property

        
'存放服务器当前版本集的文件
        Public Property VersionDateFileName() As String
            
Get
                
Return Me.gRegionalCodeService.VersionDateFileName
            
End Get
            
Set(ByVal value As String)
                
Me.gRegionalCodeService.VersionDateFileName = value
            
End Set
        
End Property

        
''' <summary>
        ''' 起用最旧版本
        ''' </summary>
        ''' <remarks>如查询日期早于最旧版本日期,使用最旧的版本</remarks>
        Public Property UseOldestVersion() As Boolean
            
Get
                
Return Me.gRegionalCodeService.UseOldestVersion
            
End Get
            
Set(ByVal value As Boolean)
                
Me.gRegionalCodeService.UseOldestVersion = value
            
End Set
        
End Property



        Public Function IsSameDataDate(ByVal queryDataDate As DateByVal currentDataDate As StringAs Boolean Implements RegionalCodeCommon.Interface.IClientUseServices.IsSameDataDate

            
Return Me.gRegionalCodeService.IsSameDataDate(queryDataDate, currentDataDate)
        
End Function

        
Private Sub gRegionalCodeService_ServiceMessage(ByVal sender As ObjectByVal message As StringHandles gRegionalCodeService.ServiceMessage
            SendMessage(message)
        
End Sub

        
Private Sub SendMessage(ByVal message As String)
            
RaiseEvent ServiceMessage(Nothing, message)
        
End Sub

        
Public Sub Dispose() Implements RegionalCodeCommon.Interface.IClientUseServices.Dispose

        
End Sub


    
End Class
End Namespace

ClientUseServices.GetData.vb

Namespace Services
    
Partial Class ClientUseServices

        
Public Function GetAllInformationsTable(ByVal queryDataDate As DateAs RegionalCodeCommon.Database.dsRegionalCode.AllInformationsDataTable Implements RegionalCodeCommon.Interface.IClientUseServices.GetAllInformationsTable

            
'如果查询版本与当前版本相同,则取当前区划信息;否则从gRegionalCodeService数据集中取

            
If Not IsSameDataDate(queryDataDate, Me.gCurrentVersionDate) Then

                gCurrentAllInformationsTable 
= Me.gRegionalCodeService.GetAllInformationsTable(queryDataDate)
                
If Me.gCurrentAllInformationsTable IsNot Nothing Then

                    
Me.gCurrentVersionDate = Me.gCurrentAllInformationsTable.TableName
                
Else

                    
Me.gCurrentVersionDate = "Empty"
                
End If
            
End If

            
Return Me.gCurrentAllInformationsTable
        
End Function

        
Public Function GetVersionsDataTable() As RegionalCodeCommon.Database.dsRegionalCode.VersionsDataTable Implements RegionalCodeCommon.Interface.IClientUseServices.GetVersionsDataTable
            
'版本集总向gRegionalCodeService数据集中取

            
Me.gVersionDateTable = Me.gRegionalCodeService.GetVersionsDataTable

            
Return Me.gVersionDateTable
        
End Function

        
Public ReadOnly Property CurrentVersionDates() As System.Collections.ObjectModel.ReadOnlyCollection(Of String)
            
Get
                
Dim tmpList As New List(Of String)
                
For Each row As RegionalCodeCommon.Database.dsRegionalCode.VersionsRow In Me.gVersionDateTable.Rows
                    tmpList.Add(row.版本日期)
                
Next
                
Return New System.Collections.ObjectModel.ReadOnlyCollection(Of String)(tmpList)
            
End Get
        
End Property

        
Public Sub Load()
            
Me.gRegionalCodeService.Load()
        
End Sub

        
Public Sub Save()
            
Me.gRegionalCodeService.Save()
        
End Sub
    
End Class
End Namespace

以上是在命名间Services上的,我再将它提交到根里去,也起名为RegionalCodeService类,

Public Class RegionalCodeService
    
Inherits Services.ClientUseServices
    
Sub New(ByVal connectionString As String)
        
MyBase.New(New Services.RegionalCodeService(connectionString))
    
End Sub
End Class

这样,RegionalCodeCenter根命名下只有两个服务类,
一是UpdateDatabaseService,含实现更新数据的全部信息,
二是RegionalCodeService,含实现查询数据的全部信息。

我对这两篇实现的功能做了简单测试,效果如下:

到目前的方案代码缓后再上传。

 

查看本文来源
    • 评论
    • 分享微博
    • 分享邮件
    闂侇収鍠曞▎銏㈡媼閵忋倖顫�

    濠碘€冲€归悘澶愬箖閵娾晜濮滈悽顖涚摃閹烩晠宕氶崶鈺傜暠闁诡垰鍘栫花锛勬喆椤ゅ弧濡澘妫楅悡娆撳嫉閳ь剟寮0渚€鐛撻柛婵呮缁楀矂骞庨埀顒勫嫉椤栨瑤绻嗛柟顓у灲缁辨繈鏌囬敐鍕杽閻犱降鍨藉Σ鍕嚊閹跺鈧﹦绱旈幋鐐参楅柡鍫灦閸嬫牗绂掔捄铏规闁哄嫷鍨遍崑宥夋儍閸曨剚浠樺ù锝嗗▕閳ь剚鏌ㄧ欢鐐寸▕鐎b晝顏遍柕鍡嫹

    重磅专题
    往期文章
    最新文章